package com.tjec.project.projectLeaderWorkbeanch.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.tjec.framework.aspectj.lang.annotation.Excel;
import com.tjec.project.system.domain.BmsAttachment;
import com.tjec.project.system.domain.BmsExpertCertification;
import io.swagger.annotations.ApiModelProperty;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.tjec.framework.web.domain.BaseEntity;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 个人专家对象 bms_expert_person
 * 
 * @author tjec
 * @date 2020-04-20
 */
public class BmsExpertPerson extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** id 主键 */
    @JsonIgnore
    private String id;

    /** 所属项目负责人 */
    @ApiModelProperty(value = "所属项目负责人")
    @Excel(name = "所属项目负责人")
    private String projectLeader;

    /**  姓名 */
    @ApiModelProperty(value = "姓名")
    @Excel(name = "姓名")
    private String name;

    /**  身份证号 */
    @ApiModelProperty(value = "身份证号")
    @Excel(name = "身份证号")
    private String identityCard;

    /** 专家编号（H0-四位流水号） */
    @JsonIgnore
    @Excel(name = "专家编号", readConverterExp = "H=0-四位流水号")
    private String serialNumber;

    /** 目前状态（0在用，1停用） */
    @ApiModelProperty(value = "目前状态（0在用，1停用）")
    @Excel(name = "目前状态", readConverterExp = "0=在用，1停用")
    private String currentState;

    /** 推荐状态（0未推荐，1已推荐） */
    @ApiModelProperty(value = "推荐状态（0未推荐，1已推荐）")
    @Excel(name = "推荐状态", readConverterExp = "0=未推荐，1已推荐")
    private String recommendStatus;

    /** 性别（0男 1女 2未知） */
    @ApiModelProperty(value = "性别（0=男,1=女,2=未知）")
    @Excel(name = "性别", readConverterExp = "0=男,1=女,2=未知")
    private String sex;

    /**  出生年月 */
    @ApiModelProperty(value = "出生年月（yyyy-MM-dd）")
    @Excel(name = "出生年月", width = 30, dateFormat = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date birthday;

    /**  籍贯 */
    @ApiModelProperty(value = "籍贯")
    @Excel(name = "籍贯")
    private String nativePlace;

    /**  职务 */
    @ApiModelProperty(value = "职务")
    @Excel(name = "职务")
    private String duty;

    /**  最高学历（0大专，1本科，2硕士，3博士，4其他） */
    @ApiModelProperty(value = "最高学历（0大专，1本科，2硕士，3博士，4其他）")
    @Excel(name = "最高学历", readConverterExp = "0=大专，1本科，2硕士，3博士，4其他")
    private String education;

    /**  毕业院校 */
    @ApiModelProperty(value = "毕业院校")
    @Excel(name = "毕业院校")
    private String school;

    /**  专业 */
    @ApiModelProperty(value = "专业")
    @Excel(name = "专业")
    private String profession;
    
    private String source;

    /**  职称（0中级，1高级，2正高级，3无，4其他） */
    @ApiModelProperty(value = "职称（0中级，1高级，2正高级，3无，4其他）")
    @Excel(name = "职称", readConverterExp = "0=中级，1高级，2正高级，3无，4其他")
    private String professionalTitle;

    /**  专业类别（从数据字典获取） */
    @ApiModelProperty(value = "专业类别（专家专业分类表获取）,多数据用英文分号隔开")
    @Excel(name = "专业类别", readConverterExp = "从=数据字典获取")
    private String professionCategory;

    @ApiModelProperty(value = "专业类别名称")
    private String professionCategoryName;

    /** 专业类别 专业类别（从数据字典获取） */
    @ApiModelProperty(value = "专业类别数组，用于传输")
    private String[] professionCategorys;

   /* *//**  专业类别（从数据字典获取） *//*
    @ApiModelProperty(value = "专业类别二级（专家专业分类表获取）")
    @Excel(name = "专业类别二级", readConverterExp = "从=数据字典获取")
    private String professionCategorySecond;

    *//**  专业类别（从数据字典获取） *//*
    @ApiModelProperty(value = "专业类别三级（专家专业分类表获取）")
    @Excel(name = "专业类别三级", readConverterExp = "从=数据字典获取")
    private String professionCategoryThird;*/

    /** 年龄 */
    @ApiModelProperty(value = "年龄")
    @Excel(name = "年龄")
    private Long age;

    /** 手机号码话 */
    @ApiModelProperty(value = "手机号码")
    @Excel(name = "手机号码")
    private String phonenumber;

    /** 其他联系电话 */
    @ApiModelProperty(value = "其他联系电话")
    @Excel(name = "其他联系电话")
    private String otherContactNumber;

    /** 邮箱 */
    @ApiModelProperty(value = "邮箱")
    @Excel(name = "邮箱")
    private String email;

    /**  开户行 */
    @ApiModelProperty(value = "开户行")
    @Excel(name = "开户行")
    private String bankName;

    /**  银行卡号 */
    @ApiModelProperty(value = "银行卡号")
    @Excel(name = "银行卡号")
    private String bankNo;

    /**  现所在单位 */
    @ApiModelProperty(value = "现所在单位")
    @Excel(name = "现所在单位")
    private String currentCompany;

    /**  联系地址 */
    @ApiModelProperty(value = "联系地址")
    @Excel(name = "联系地址")
    private String address;

    /**  是否同济大学在职人员（0否，1是，2未知） */
    @ApiModelProperty(value = "是否同济大学在职人员（0否，1是，2未知）")
    @Excel(name = "是否同济大学在职人员", readConverterExp = "0=否，1是，2未知")
    private String tjuFlag;

    /**  所在院系 */
    @ApiModelProperty(value = "所在院系")
    @Excel(name = "所在院系")
    private String tjuFaculty;

   /* *//**  沪建设工程评标专家（0否，1是，2未知） *//*
    @ApiModelProperty(value = "沪建设工程评标专家（0否，1是，2未知）")
    @Excel(name = "沪建设工程评标专家", readConverterExp = "0=否，1是，2未知")
    private String evaluationBidFlag;

    *//**  沪建设工程评标专家专业 *//*
    @ApiModelProperty(value = "沪建设工程评标专家专业")
    @Excel(name = "沪建设工程评标专家专业")
    private String evaluationBidProfession;

    *//**  沪建设工程评标专家证号 *//*
    @ApiModelProperty(value = "评标专家证号")
    @Excel(name = "评标专家证号")
    private String evaluationBidNo;

    *//**  评标资深专家(0是，1否) *//*
    @ApiModelProperty(value = "评标资深专家(0是，1否)")
    @Excel(name = "评标资深专家(0是，1否)")
    private String seniorExpertFlag;

    *//**  沪政府采购专家（0否，1是，2未知） *//*
    @ApiModelProperty(value = "沪政府采购专家(0=否，1是，2未知)")
    @Excel(name = "沪政府采购专家", readConverterExp = "0=否，1是，2未知")
    private String purchaseFlag;

    *//**  沪政府采购专家专业 *//*
    @ApiModelProperty(value = "沪政府采购专家专业")
    @Excel(name = "沪政府采购专家专业")
    private String purchaseProfession;

    *//**  沪政府采购专家证号 *//*
    @ApiModelProperty(value = "沪政府采购专家证号")
    @Excel(name = "沪政府采购专家证号")
    private String purchaseNo;*/

    /** 从业务分类下拉列表选择，可多选 */
    @ApiModelProperty(value = "从业务分类下拉列表选择，可多选，多数据用英文分号隔开")
    private String businessMerit;

    @ApiModelProperty(value = "业务分类数组，用于传输")
    private String[] businessMerits;

    /** 从【数据字典-国民经济行业类别】中多选 */
    @ApiModelProperty(value = "行业类别，从【数据字典-国民经济行业类别】中多选")
    private String industryMerit;

    @ApiModelProperty(value = "行业类别数组，用于传输，多数据用英文分号隔开")
    private String[] industryMerits;

    /** 语言特长 语言特长：从数据字典获取 */
    @ApiModelProperty(value = "语言特长：从数据字典获取")
    private String languageMerit;

    /** 经历与成就 */
    @ApiModelProperty(value = "经历与成就")
    @Excel(name = "经历与成就")
    private String introduction;

    /** 特长备注 */
    @ApiModelProperty(value = "特长备注")
    @Excel(name = "特长备注")
    private String meritRemark;

    /** 专家费用 */
    @ApiModelProperty(value = "专家费用")
    @Excel(name = "专家费用")
    private Double useAmount;
    
    /*
     * 推荐率
     */
    private String recommendRate;

    /** guid */
    private String guid;

    @ApiModelProperty(value = "专家持证情况集合")
    private List<BmsExpertCertification> bmsExpertCertifications;

    @ApiModelProperty(value = "附件集合")
    private List<BmsAttachment> bmsAttachments;

    /** 附件id集合 */
    @ApiModelProperty(value = "附件id集合")
    private ArrayList<String> attachmentIds;

    @ApiModelProperty(value = "专家持证情况传参")
    private String expertCertification;

    @ApiModelProperty(value = "常用检索标签")
    private String commonSearchTags;

    /**
     * 添加专家使用查询个人专家数据时传参使用
     */
    private String businessId;

    @ApiModelProperty(value = "业务特长")
    private String businessExpertise;

    @ApiModelProperty(value = "用戶ID")
    private String userId;

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public String getBusinessExpertise() {
        return businessExpertise;
    }

    public void setBusinessExpertise(String businessExpertise) {
        this.businessExpertise = businessExpertise;
    }

    public String getBusinessId() {
        return businessId;
    }

    public void setBusinessId(String businessId) {
        this.businessId = businessId;
    }

    public String getCommonSearchTags() {
        return commonSearchTags;
    }

    public void setCommonSearchTags(String commonSearchTags) {
        this.commonSearchTags = commonSearchTags;
    }

    public String getExpertCertification() {
        return expertCertification;
    }

    public void setExpertCertification(String expertCertification) {
        this.expertCertification = expertCertification;
    }

    public ArrayList<String> getAttachmentIds() {
        return attachmentIds;
    }

    public void setAttachmentIds(ArrayList<String> attachmentIds) {
        this.attachmentIds = attachmentIds;
    }

    public List<BmsAttachment> getBmsAttachments() {
        return bmsAttachments;
    }

    public void setBmsAttachments(List<BmsAttachment> bmsAttachments) {
        this.bmsAttachments = bmsAttachments;
    }

    public String[] getProfessionCategorys() {
        return professionCategorys;
    }

    public void setProfessionCategorys(String[] professionCategorys) {
        this.professionCategorys = professionCategorys;
    }

    public String[] getBusinessMerits() {
        return businessMerits;
    }

    public void setBusinessMerits(String[] businessMerits) {
        this.businessMerits = businessMerits;
    }

    public String[] getIndustryMerits() {
        return industryMerits;
    }

    public void setIndustryMerits(String[] industryMerits) {
        this.industryMerits = industryMerits;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getProjectLeader() {
        return projectLeader;
    }

    public void setProjectLeader(String projectLeader) {
        this.projectLeader = projectLeader;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getIdentityCard() {
        return identityCard;
    }

    public void setIdentityCard(String identityCard) {
        this.identityCard = identityCard;
    }

    public String getSerialNumber() {
        return serialNumber;
    }

    public void setSerialNumber(String serialNumber) {
        this.serialNumber = serialNumber;
    }

    public String getCurrentState() {
        return currentState;
    }

    public void setCurrentState(String currentState) {
        this.currentState = currentState;
    }

    public String getRecommendStatus() {
        return recommendStatus;
    }

    public void setRecommendStatus(String recommendStatus) {
        this.recommendStatus = recommendStatus;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public String getNativePlace() {
        return nativePlace;
    }

    public void setNativePlace(String nativePlace) {
        this.nativePlace = nativePlace;
    }

    public String getDuty() {
        return duty;
    }

    public void setDuty(String duty) {
        this.duty = duty;
    }

    public String getEducation() {
        return education;
    }

    public void setEducation(String education) {
        this.education = education;
    }

    public String getSchool() {
        return school;
    }

    public void setSchool(String school) {
        this.school = school;
    }

    public String getProfession() {
        return profession;
    }

    public void setProfession(String profession) {
        this.profession = profession;
    }

    public String getProfessionalTitle() {
        return professionalTitle;
    }

    public void setProfessionalTitle(String professionalTitle) {
        this.professionalTitle = professionalTitle;
    }

    public String getProfessionCategory() {
        return professionCategory;
    }

    public void setProfessionCategory(String professionCategory) {
        this.professionCategory = professionCategory;
    }

    public String getProfessionCategoryName() {
        return professionCategoryName;
    }

    public void setProfessionCategoryName(String professionCategoryName) {
        this.professionCategoryName = professionCategoryName;
    }

    public Long getAge() {
        return age;
    }

    public void setAge(Long age) {
        this.age = age;
    }

    public String getPhonenumber() {
        return phonenumber;
    }

    public void setPhonenumber(String phonenumber) {
        this.phonenumber = phonenumber;
    }

    public String getOtherContactNumber() {
        return otherContactNumber;
    }

    public void setOtherContactNumber(String otherContactNumber) {
        this.otherContactNumber = otherContactNumber;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getBankName() {
        return bankName;
    }

    public void setBankName(String bankName) {
        this.bankName = bankName;
    }

    public String getBankNo() {
        return bankNo;
    }

    public void setBankNo(String bankNo) {
        this.bankNo = bankNo;
    }

    public String getCurrentCompany() {
        return currentCompany;
    }

    public void setCurrentCompany(String currentCompany) {
        this.currentCompany = currentCompany;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getTjuFlag() {
        return tjuFlag;
    }

    public void setTjuFlag(String tjuFlag) {
        this.tjuFlag = tjuFlag;
    }

    public String getTjuFaculty() {
        return tjuFaculty;
    }

    public void setTjuFaculty(String tjuFaculty) {
        this.tjuFaculty = tjuFaculty;
    }

    public String getBusinessMerit() {
        return businessMerit;
    }

    public void setBusinessMerit(String businessMerit) {
        this.businessMerit = businessMerit;
    }

    public String getIndustryMerit() {
        return industryMerit;
    }

    public void setIndustryMerit(String industryMerit) {
        this.industryMerit = industryMerit;
    }

    public String getLanguageMerit() {
        return languageMerit;
    }

    public void setLanguageMerit(String languageMerit) {
        this.languageMerit = languageMerit;
    }

    public String getIntroduction() {
        return introduction;
    }

    public void setIntroduction(String introduction) {
        this.introduction = introduction;
    }

    public String getMeritRemark() {
        return meritRemark;
    }

    public void setMeritRemark(String meritRemark) {
        this.meritRemark = meritRemark;
    }

    public Double getUseAmount() {
        return useAmount;
    }

    public void setUseAmount(Double useAmount) {
        this.useAmount = useAmount;
    }

    public String getGuid() {
        return guid;
    }

    public void setGuid(String guid) {
        this.guid = guid;
    }

    public List<BmsExpertCertification> getBmsExpertCertifications() {
        return bmsExpertCertifications;
    }

    public void setBmsExpertCertifications(List<BmsExpertCertification> bmsExpertCertifications) {
        this.bmsExpertCertifications = bmsExpertCertifications;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("projectLeader", getProjectLeader())
            .append("name", getName())
            .append("identityCard", getIdentityCard())
            .append("serialNumber", getSerialNumber())
            .append("currentState", getCurrentState())
            .append("sex", getSex())
            .append("birthday", getBirthday())
            .append("nativePlace", getNativePlace())
            .append("duty", getDuty())
            .append("education", getEducation())
            .append("school", getSchool())
            .append("profession", getProfession())
            .append("professionalTitle", getProfessionalTitle())
            .append("professionCategory", getProfessionCategory())
            .append("age", getAge())
            .append("phonenumber", getPhonenumber())
            .append("email", getEmail())
            .append("bankName", getBankName())
            .append("bankNo", getBankNo())
            .append("currentCompany", getCurrentCompany())
            .append("address", getAddress())
            .append("tjuFlag", getTjuFlag())
            .append("tjuFaculty", getTjuFaculty())
          /*  .append("evaluationBidFlag", getEvaluationBidFlag())
            .append("evaluationBidProfession", getEvaluationBidProfession())
            .append("evaluationBidNo", getEvaluationBidNo())
            .append("seniorExpertFlag", getSeniorExpertFlag())
            .append("purchaseFlag", getPurchaseFlag())
            .append("purchaseProfession", getPurchaseProfession())
            .append("purchaseNo", getPurchaseNo())*/
            .append("remark", getRemark())
            .append("businessMerit", getBusinessMerit())
            .append("industryMerit", getIndustryMerit())
            .append("languageMerit", getLanguageMerit())
            .append("introduction", getIntroduction())
            .append("meritRemark", getMeritRemark())
            .append("useAmount", getUseAmount())
            .append("source", getSource())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("recommendStatus", getRecommendStatus())
            .append("otherContactNumber", getOtherContactNumber())
            .append("guid", getGuid())
            .append("recommendRate", getRecommendRate())
            .toString();
    }

	public String getSource() {
		return source;
	}

	public void setSource(String source) {
		this.source = source;
	}

	public String getRecommendRate() {
		return recommendRate;
	}

	public void setRecommendRate(String recommendRate) {
		this.recommendRate = recommendRate;
	}
}
